[アップデート]AWS Fargate プラットフォームバージョン1.4でできるようになったこと
はじめに
こんにちは、コンサル部の島川です。
2020/4/8 Fargateの新しいプラットフォームバージョン 1.4がリリースされました。てんこ盛りですが、今すぐ適用させたいそんな機能ばかりです!
アップデート情報は基本的にここにまとまっていますが、こちらでも再度要点をまとめて更に適用する手順についてもご紹介いたします。
追加された新機能について
FargateはECSとEKSで利用することができますが、今回のアップデートは主にECSにおけるアップデートになります。共通する部分もありますが、基本的にECSでの利用という点に注意してください。
FargateでElastic File System(EFS)が使えるようになりました
ECS on EC2では既に使える機能でしたが、ECS on Fargateでも使えるようになりました!限られたディスク容量という課題をクリアすることができます。 タスク定義でボリュームを追加してあげればOKです。
詳しい設定方法については以下を参考にしてください。 https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html
コンテナイメージ用の一時ローカルボリュームが10GB→20GBに拡張されました
20GBまで拡張されたことでかゆいところに手が届くようになったアップデートではないかと思います。一時的に処理できる容量も増えるのでアプリケーションの改善にも役立ちそうです。
一つだけ注意点があります。EKS on FargateについてはKubernetesモジュールで一部使われている仕様で19GBが上限になります。
Fargateからのいくつかの通信がVPCのみで完結するようになりました。
今まで下記の通信においてはAWSが用意するFargate ENIを経由して通信をしていました。
- ECRへのログイン
- AWS Secrets Managerからのシークレット取得
- AWS Systems Manager Parameter Storeからのシークレット取得
これらの処理がタスクENIを経由するように変更することができ、VPC内部の通信で完結するようになります。
引用:https://aws.amazon.com/jp/blogs/containers/aws-fargate-launches-platform-version-1-4/
これによってVPC フローログで通信を確認できるようになります。AWS PrivateLinkの設定が必要なのでご注意ください。
CloudWatch Container Insightsでネットワークメトリクスが確認できるようになりました
シンプルにそのままFargateで制限されていたContainer Insightsでのネットワークメトリクスの表示が解禁されました!
CAP_SYS_PTRACEをサポートするようになりました
セキュリティの問題から実現が難しかったプロセスのトレース、straceが使えるようになりました。Fargateでもより複雑な監視が実現できます!適用するにはJSONを直接編集してあげる必要があります。
sysdig社のこちらの記事が参考になります。 Falco Support on AWS Fargate
タスクメタデータ経由でネットワーク情報を取得できるようになりました
ECS_CONTAINER_METADATA_URI_V4
という環境変数がコンテナに挿入されるようになりました。
curl ${ECS_CONTAINER_METADATA_URI_V4}/task/stats
このコマンドを使用して、ネットワーク情報を取得することができます!監視に役立ちますね。
AZの情報も合わせて取得できるようになりました
V4以前のバージョンにも対応しています!
実行エンジンがContainerdに置き換わり、エージェントもFargate用に最適化されました。
Docker EngineからContainerdに置き換わることで最小限の機能で実行されるようになりました。より最適化された環境になりました。
これまでECSエージェントがコンテナ開始前に立ち上げていたpauseコンテナが無くなっていたりしてます。
このデータプレーンの変更に関してはUnder the hood: AWS Fargate data planeに情報がまとまっています。
またエージェントも今まではECS標準のものでしたが、Fargate用に最適化されたエージェントに置き換えられています。
Containerdに置き換わったことによりエラーメッセージが変更されています。
Docker Engine用のエラーメッセージが変更されています。
エラーメッセージについてはドキュメントを参考にしてください。 Stopped tasks error codes
ジャンボフレームをサポートしました
標準のフレームサイズである1500バイトではなくジャンボフレーム(9000~16000バイト)に対応しました。通信の大幅な改善が見込めます。
1.4への適用について
こちらを今すぐ適用するためには「latest」ではなく明示的に「1.4」を指定する必要があります。
latestへの反映はすぐには適用されず、約1か月間後に適用されるようです。このあたりのライフサイクルポリシーに関しては以下ブログを参考にしてください。 AWS Fargate platform versions primer
さいごに
怒涛のアップデートでまだ追いつけてない自分がいますが、このアップデートでさらにFargateを選択しやすくなったと感じます。ECS on EC2に比べ単純なリソースサイズのコストは高いです。高いですが、運用コスト、扱いやすさを考えるとFargateのほうがお得ではないかと感じます。
追い風が吹くFargateこれからもキャッチアップしていこうと思います!